DQL Strict Mode
DQL_STRICT_MODE=false
), Ditto is more flexible and will infer the CRDT type based on the document’s shape:Differ
API for calculating diffs between query results.
This API can be used with a store observer to understand how its results change
over successive callbacks. The Differ
API provides a way to track changes in
the data and can be used to optimize data synchronization and conflict resolution.Differ API documentation.Feature | Description | Example |
---|---|---|
UNSET clause | Remove fields from documents | UPDATE orders UNSET items.abc WHERE _id = 'my-id' |
CAST function | Explicitly convert between data types | SELECT * FROM products WHERE CAST(price AS INT) > 10 |
USE IDS clause | Direct document retrieval by ID | SELECT * FROM products USE IDS ['123', '456'] |
SIMILAR TO | Pattern matching expressions | SELECT * FROM products WHERE name SIMILAR TO '%phone%' |
Runtime expressions | Use expressions in object/array construction | UPDATE products SET metadata = { 'updated_at': current_timestamp() } |
Counters | Support for legacy compatible counter type | UPDATE products APPLY in_stock PN_INCREMENT BY 1.0 |
->
) are deprecated.DELETE
to remove documents.Added
DQL_STRICT_MODE
as a system parameter to opt-out of requiring collection definitions (#16573)Changed
Fixed
Removed
network_use_nextgen_multihop_stack
(#16370)Performance
persistenceDirectory
parameter now throws a DittoError
with code store/persistence-directory-locked
instead of only logging an error. This change prevents constructing a non-functional instance as Ditto does require separate configurations for this parameter when multiple instances are instantiated. (#12336) Added: Error code store/persistence-directory-locked
to the DittoError
class. (#12336) Added: property SmallPeerInfo.syncScope
to replace the now deprecated methods SmallPeerInfo.getSyncScope()
and Ditto.smallPeerInfo.setSyncScope()
. (#15579) Deprecated: Methods SmallPeerInfo.getSyncScope()
and SmallPeerInfo.setSyncScope()
, use the SmallPeerInfo.syncScope
property instead. (#15579) Added: Method transaction()
on Store
allowing a DQL transaction to be performed. (#15800) Added: Transaction
representing an active DQL transaction. (#15800) Added: TransactionInfo
encapsulating information about a transaction. (#15800) Added: TransactionCompletionAction
representing an action to be taken upon completing a transaction: Commit or Rollback. (#15800) Added: An opt-in Android foreground service which allows Ditto to sync in the background. (#16097) Added: ditto.observeTransportConditions()
API for React Native that will allow developers to be aware transports conditions changes, like shutting down bluetooth. (#16518) Added: class Diff
to represent diffs produced by the Differ
. (#16723) Added: class Differ
, which calculates diffs between query results. This can be used with a store observer to understand how its results change over successive callbacks. (#16723) Added: More detailed messages about network problems are logged when authentication fails (#SEC-124) Changed: Unify dedicated TCP servers across different transports (Multicast, mDNS, and WiFi Aware) by utilizing a single static TCP server implementation (#TRANS-131)